<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>axios手写</title>
</head>
<body>
	<button>发送</button>
	<button>取消</button>
</body>
<script src="./node_modules/axios/dist/axios.js"></script>
<script type="module">
	// axios()===>promise实例===》
	/*
	Promise.resolve(config)
		.then(请求拦截成功2,请求拦截失败2)
		.then(请求拦截成功1,请求拦截失败1)
		.then(dispatchRequest,undefined)
		.then(响应拦截成功1===>200,响应拦截失败1)
		.then(响应拦截成功2,响应拦截失败2)
	*/
	// 请求拦截能否写多次？2  0
	// 请求拦截:发送请求之前进行拦截
	// config是配置对象   1  2
	// 请求拦截对应的回调函数先定义的后执行
	const r1 = axios.interceptors.request.use(function(config){
		console.log("请求拦截成功1")
		return config;
	},function(err){
		console.log("请求拦截失败1",err);
		return err;
	})
	const r2 = axios.interceptors.request.use(function(config){
		console.log("请求拦截成功2")
		return config;
	},function(err){
		console.log("请求拦截失败2");
		return err;
	})
	// 响应拦截:得到响应信息以后进行拦截
	// 响应拦截对应的回调函数先定义的先执行
	const s1 = axios.interceptors.response.use(function(res){
		console.log("响应拦截成功1");
		return res;
		// return res;
	},function(err){
		console.log("响应拦截失败1");
		return err;
	})
	const s2 = axios.interceptors.response.use(function(res){
		console.log("响应拦截成功2");
		return res;
	},function(err){
		console.log("响应拦截失败2");
		return err;
	})
	// 可以取消拦截
	// axios.interceptors.request.eject(r1);
	// axios.interceptors.request.eject(r2);
	// axios.interceptors.response.eject(s1);
	// axios.interceptors.response.eject(s2);
	
	// 将所有 的请求拦截移除
	axios.interceptors.request.clear();
	// 将所有的响应拦截移除
	axios.interceptors.response.clear();
	
	axios.get("./index.js").then(value=>{
		console.log("得到了响应体",value);// 响应体
	})
	
	
	// const p = Promise.resolve(0);
	// // then 返回的是一个Promise实例，Promise实例的状态和值受回调函数的影响
	// // 回调函数决定then返回的Promise的状态和值。
	// // 1- 回调函数如果返回的是一个非Promise实例，那么最终p2的状态为成功，值为返回值
	// // 2- 如果返回的是一个Promise实例，那么p2的状态和值与返回的Promise实例相同。
	// // 3- then函数返回的是一个新的Promise实例。
	// const p2 = p.then(value=>{
	// 	return {then:function(){}};// 实现中断Promise链
	// })
	// console.log(p2);// pending undefined
</script>
</html>